iT邦幫忙

2023 iThome 鐵人賽

DAY 9
0
Mobile Development

Android與Spring Boot開發學習之旅系列 第 9

開發學習之旅 Day9 - Java Persistence API(JPA)

  • 分享至 

  • xImage
  •  

JPA是一個ORM規範,定義一組API,用於實現對象 關係映射。Hibernate是一個符合JPA規範的具體ORM框架,提供在Java應用程序中實現數據庫交互和ORM。可以選擇使用JPA規範,然後選擇具體的JPA實現(Hibernate),以滿足應用程序需求。

Spring Boot JPA是Spring Boot框架與JPA的集成,用於簡化和加速基於Spring Boot的應用程序數據持久性操作。提供了簡單的方法來執行創建、讀取、更新和刪除數據庫記錄,無需另外編寫SQL,使開發人員能夠以面向對象的方式操作數據,而無需深入涉及 SQL 查詢和數據庫細節。同時提供了可擴展性和可讀性,使開發過程更高效更易於管理。

通過使用以下這些註釋,可以輕鬆地定義實體類,並指示Spring Boot JPA如何將它們映射到數據庫表格,簡化了對數據庫操作的開發過程。

  1. @Entity:
    表示該Java類是一個JPA實體類,將映射到數據庫中的一個表。
  2. @Table:
    指定實體類映射到的數據庫表格的詳細信息,包含表名、模式、索引、唯一約束等。
  3. @Id:
    將實體類中的一個屬性被映射為數據庫表的主鍵。
  4. @GeneratedValue:
    定義主鍵的生成策略,如自動增量、序列等。
  5. @Column
    自定義屬性和數據庫表格列之間的映射,包括列名、長度、是否允許為空等。
  6. @OneToOne
    建立一對一映射關係,每個物件只有一個相關聯的對象。
  7. @OneToMany
    建立一對多映射關係,可以將多個子實體關聯到同一個父實體。
  8. @ManyToOne
    建立多對一的映射關係,可以將一個父實體關聯到多個子實體。
  9. @ManyToMany
    建立多對多的映射關係,通常需要使用一個中介表來存儲關聯關係。
  10. @JoinColumn
    用於定義外鍵列的映射。
  11. @NamedQuery
    用於定義命名查詢,可以在JPA查詢中使用這些名稱來引用預定義的查詢。
  12. @Version
    確保多個事務不會同時修改數據造成衝突。

@GeneratedValue 常見屬性

  1. strategy
    • GenerationType.IDENTITY
      使用數據庫的自動增量列來生成主鍵值。
    • GenerationType.SEQUENCE
      使用數據庫的序列來生成主鍵值。
    • GenerationType.TABLE
      使用數據庫表格來存儲主鍵值的狀態。
    • GenerationType.AUTO
      JPA自動選擇適當的生成策略。
  2. generator
    當 strategy 設置為 GenerationType.TABLE 時,可以使用這個屬性指定生成策略的名稱。

@Column 常見屬性

  1. name
    用於指定列的名稱。如果屬性名稱和列名稱相同,則不需要指定這個屬性。
  2. nullable
    指定列是否允許為 null 值。
  3. length
    指定列的最大長度。
  4. precision 、 scale
    用於映射到數值列,指定精度和小數點位數。
  5. unique
    指定列是否唯一。
  6. updatable
    指定列是否可以被更新。

上一篇
開發學習之旅 Day8 - 建立第一個SpringBoot應用程序
下一篇
開發學習之旅 Day10 - RESTful API 與 數值傳遞方法
系列文
Android與Spring Boot開發學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言